from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        # 设置主窗口的基本属性
        MainWindow.setObjectName("MainWindow")  # 设置窗口对象名称
        MainWindow.resize(890, 1130)  # 设置窗口大小为890x1130像素

        self.centralwidget = QtWidgets.QWidget(MainWindow)  # 创建一个中心部件来容纳所有控件
        self.centralwidget.setObjectName("centralwidget")  # 设置中心部件的对象名称

        # 棋盘区域 - 使用QLabel作为棋盘显示区域
        self.chessboard = QtWidgets.QLabel(self.centralwidget)
        self.chessboard.setGeometry(QtCore.QRect(10, 10, 870, 870))  # 设置棋盘的位置和大小
        self.chessboard.setFrameShape(QtWidgets.QFrame.Box)  # 给棋盘添加边框
        self.chessboard.setAlignment(QtCore.Qt.AlignCenter)  # 内容居中对齐
        self.chessboard.setObjectName("chessboard")  # 设置对象名称
        self.chessboard.setStyleSheet("background-color: #f0d9b5;")  # 设置背景颜色模仿木质纹理

        # 步数标签 - 显示游戏步数
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(10, 890, 200, 30))  # 设置标签位置和大小
        self.label_2.setObjectName("label_2")  # 设置对象名称

        # 时间标签 - 显示游戏时间
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(220, 890, 200, 30))  # 设置标签位置和大小
        self.label_3.setObjectName("label_3")  # 设置对象名称

        # 当前玩家标签 - 显示当前轮到哪方走
        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(430, 890, 200, 30))  # 设置标签位置和大小
        self.label_7.setObjectName("label_7")  # 设置对象名称

        # 聊天文本浏览区 - 显示聊天记录
        self.chatTextBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.chatTextBrowser.setGeometry(QtCore.QRect(10, 920, 680, 150))  # 设置聊天区域位置和大小
        self.chatTextBrowser.setObjectName("chatTextBrowser")  # 设置对象名称

        # 聊天输入框 - 用户输入聊天内容的地方
        self.chatLineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.chatLineEdit.setGeometry(QtCore.QRect(10, 1080, 560, 30))  # 设置输入框位置和大小
        self.chatLineEdit.setObjectName("chatLineEdit")  # 设置对象名称

        # 发送按钮 - 用户点击发送聊天信息
        self.sendButton = QtWidgets.QPushButton(self.centralwidget)
        self.sendButton.setGeometry(QtCore.QRect(580, 1080, 100, 30))  # 设置按钮位置和大小
        self.sendButton.setObjectName("sendButton")  # 设置对象名称

        # 清除聊天记录按钮 - 用户点击清除聊天记录
        self.clearChatButton = QtWidgets.QPushButton(self.centralwidget)
        self.clearChatButton.setGeometry(QtCore.QRect(690, 1080, 100, 30))  # 设置按钮位置和大小
        self.clearChatButton.setObjectName("clearChatButton")  # 设置对象名称

        # 游戏结果标签 - 显示游戏结束时的结果
        self.result_label = QtWidgets.QLabel(self.centralwidget)
        self.result_label.setGeometry(QtCore.QRect(690, 920, 280, 100))  # 设置标签位置和大小
        self.result_label.setAlignment(QtCore.Qt.AlignCenter)  # 文本居中对齐
        self.result_label.setObjectName("result_label")  # 设置对象名称
        self.result_label.setStyleSheet("font-size: 20px; color: red;")  # 设置字体样式和颜色

        MainWindow.setCentralWidget(self.centralwidget)  # 将中心部件设置为主窗口的中心部件

        self.retranslateUi(MainWindow)  # 重新翻译界面元素（例如设置文本）
        QtCore.QMetaObject.connectSlotsByName(MainWindow)  # 连接信号和槽函数

        # 连接发送按钮的点击事件到槽函数
        self.sendButton.clicked.connect(self.on_sendButton_clicked)

        # 连接清除聊天记录按钮的点击事件到槽函数
        self.clearChatButton.clicked.connect(self.on_clearChatButton_clicked)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate  # 获取翻译器对象
        MainWindow.setWindowTitle(_translate("MainWindow", "Gomoku"))  # 设置主窗口标题
        self.label_2.setText(_translate("MainWindow", "步数：0"))  # 设置步数标签的初始文本
        self.label_3.setText(_translate("MainWindow", "时间：00:00"))  # 设置时间标签的初始文本
        self.label_7.setText(_translate("MainWindow", "轮到黑方！"))  # 设置当前玩家标签的初始文本
        self.sendButton.setText(_translate("MainWindow", "发送"))  # 设置发送按钮的文本
        self.clearChatButton.setText(_translate("MainWindow", "清除聊天"))  # 设置清除聊天按钮的文本
        self.result_label.setText(_translate("MainWindow", ""))  # 初始化游戏结果标签为空白

    def on_sendButton_clicked(self):
        # 获取聊天输入框中的文本
        message = self.chatLineEdit.text()
        if message:
            # 添加消息到聊天文本浏览器，并带上时间戳
            timestamp = QtCore.QDateTime.currentDateTime().toString('[hh:mm:ss]')
            self.chatTextBrowser.append(f"{timestamp} 用户: {message}")
            # 清空聊天输入框
            self.chatLineEdit.clear()

    def on_clearChatButton_clicked(self):
        # 清空聊天文本浏览器的内容
        self.chatTextBrowser.clear()


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)  # 创建应用程序对象
    MainWindow = QtWidgets.QMainWindow()  # 创建主窗口对象
    ui = Ui_MainWindow()  # 创建UI对象
    ui.setupUi(MainWindow)  # 设置主窗口的UI
    MainWindow.show()  # 显示主窗口
    sys.exit(app.exec_())  # 运行应用程序并等待退出